<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 无限调用
    // function fn() {
    //   fn()
    // }

    var i = 0
    function fn() {
      console.log(i);
      i++
      if (i <= 10) {
        fn()
      }
    }
    fn()

    // 运行原理
    /**
     * 一开始i为0, 进入if语句后再次调用自身,if外部的打印并不会执行,直到i等于10,未进入if,才会执行下方的
     * 打印, 打印两遍10是因为i等于9的时候进入了if判断,将i++,变为10,然后再次执行自身并传入10,然后不进入判断,直接打印10, 最后依次执行前方
     * 的打印(i=9的时候打印的是10)
     * 结果:
     *  10 10 9 8 7 6 5 4 3 2 1
    */
    function fn1(i) {
      if (i < 10) {
        i++
        fn1(i)
      }
      console.log(i);
    }
    fn1(0)
  </script>
</body>

</html>